数据之道 | SLA/SLE监控与告警
供稿 | eBay DSS Team
作者 | 冯奕彬
编辑 | 顾欣怡本文2622字,预计阅读时间8分钟更多干货请关注“eBay技术荟”公众号导言
eBay 现在处理的数据量达数百PB,每天执行的数据作业量超过100,000,这对 eBay 大数据系统有着很高的要求。高质量、高可靠、准时到达的数据不仅仅是AI、数据建模的基础,更是eBay业务部门做业务决策的重要基石。
iDO(Intelligent Data Operation)是eBay大数据部门的数据运维智能化平台, 其重要功能之一就是监控数据作业流中的异常。本文一方面是展示iDO平台在2019上线的数据作业的监控策略,即如何从大量的job中发现可能导致delay的隐患,一方面也是对目前策略的总结和探讨,以期更智能更精确的数据监控。Q1:我们在做什么?
简单的说,就是在发现目标数据预计生成时间晚于设置的deadline时,发出告警提醒我们的工程师,从而让数据作业可以满足向用户承诺的SLA(Service Level Agreement),避免可能发生的delay。
为了实现这个目标:
1. 需要监控job的实时运行情况从而获得数据流的状态;
2. 需要从数据流的状态中估算出目标done file是否可能晚于deadline生成。这里面有两个很重要的指标:
1. Precision/Recall,准确度和召回率,即不多告警也不漏告警,这是告警策略能被依赖的基础;
2. 时效性,告警发出后留给工程师解决问题的时间,这是告警能够帮助工程师避免数据miss的基础。当然,这两者存在某种程度的互斥,在后面会进行阐述。
理想的结果是,我们的工程师仅需在收到告警的时候去关注告警所指向的异常位置,即可避免绝大多数的miss,同时这些告警也不会造成过多的打扰。
Q2:为什么替换原告警策略?
Q3:新告警策略是什么?
从里程碑监控变为关键路径监控,就能让数据具备自己决定关键节点的能力,并且这些关键节点是动态变化的,产生的告警就会聚焦于决定目标完成时间的那部分job节点。这样就会大量减少误报率,因为原策略中根据经验选择的关键节点不在关键路径上的监控就会撤销,不再因此而产生误报。在关键路径策略上线的第一个月,我们并行使用了原有的策略,在相同条件下分别统计告警指标:
Q4:如何处理每天的冷启动?
Q5:如何处理节点大小分布不均衡的问题,是否需要人为设置关键节点?
所以节点大小不均衡就不会成为问题,同时也是无需设定关键节点的,只需设定最终目标。
Q6:在可视化流程图时,如何处理节点数量过多的问题?
在实践中发现,被监控的一个流程图会有超过1,000的节点,很难进行展示。
(点击可查看大图)
Q7:如何处理告警准确度和时效性的矛盾?
越是接近deadline的告警当然越准,但这样的告警对避免数据miss并没有作用;而过早的告警则会产生很多的误报。我们在实践中尝试过很多方式去减少误报或是减少漏报,最终保留下来的几个方式就形成了现在的分级告警:
预计完成时间超过deadline。
执行过于缓慢或是发生了卡顿。 job执行状态异常,或是发生了重启。
在准确度上,1>2>3; 在时效性上3>2>1。1的准确度很高,一旦发生这种级别的告警,设定的目标就很难在deadline之前完成了,所以建议设定的deadline比实际的deadline早1小时左右。2的时效性会很好,异常的卡顿是造成最终miss的真正原因,但也会造成一定程度的误报。3是对1和2的补充,准确度偏低。
Q8:有什么改进方向?
所以一个改进思路是图数据库,如果一开始将数据存在图数据库中,可能会赋予告警算法更为高效灵活的特性。将告警算法与图数据库结合也是某种程度的抽象,或许可以回馈开源社区。另一个改进思路是机器学习,将策略向更为智能的方向改进。既然关键路径策略的细节特别复杂,步骤很多,不如考虑使用ML端到端地给出一个告警,比如70%的概率将发生miss;或是用ML进行异常检测,将发现异常的位置作为告警的内容。
重磅 | eBay提出强大的轻量级推荐算法——洛伦兹因子分解机
实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
一探究竟 | eBay流量管理之DSR在基础架构中的运用及优化
eBay大量优质职位,等的就是你